//
//  HRMainViewController.swift
//  microBlog
//
//  Created by HR_W on 16/5/19.
//  Copyright © 2016年 admin. All rights reserved.
//

import UIKit

class HRMainViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        //添加TabController的子视图控制器
        addChildControllers()

        let mainTabBar = HRMainTabBar()
        
        mainTabBar.plusBtn.addTarget(self, action: #selector(HRMainViewController.plusBtnDidClick), forControlEvents: .TouchUpInside)
        //赋值 只读属性不能够直接赋值 但是 可以通过kvc间接赋值
        
        setValue(mainTabBar, forKey: "tabBar")
    }
    /*
     为了让外界不能够访按钮的监听方法 需要添加private 私有
     一旦添加private 这个时候 这个方法就不具备动态派发的特性
     需要添加 @objc 告诉系统这个方法 是基于OC消息动态派发的
     */
    
   @objc private func plusBtnDidClick() {
    
       // print("+号被点击了")
    let composeView = HRComposeView()
    
    composeView.show(targetVc: self)
    
    }
    

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    //private 表示 私有的意思 只是相对于当前文件 私有的
    private func addChildControllers() {
    
        createChildControllers(HRHomeTableViewController(), imageName: "tabbar_home", titile: "首页")
        createChildControllers(HRMessageTableViewController(), imageName: "tabbar_message_center", titile: "消息")
        createChildControllers(HRDiscoverTableViewController(), imageName: "tabbar_discover", titile: "发现")
        createChildControllers(HRProfileTableViewController(), imageName: "tabbar_profile", titile: "我")
    
    }
    
    
   private func createChildControllers (vc: UIViewController,imageName: String,titile: String) {
        //如果标签和导航条的title 是一样的
    
        let tabBarItem = HRTabBarItem()
        vc.tabBarItem = tabBarItem
        vc.title = titile
        vc.tabBarItem.image = UIImage(named: imageName)
        //设置选中时的图片 需要设置渲染模式 也可以通过xcasserts中设置
        vc.tabBarItem.selectedImage = UIImage(named: imageName + "_selected")?.imageWithRenderingMode(.AlwaysOriginal)
        //设置title的颜色
        vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.orangeColor()], forState: .Selected)
    
        //统一设置所有的title的颜色
       // tabBar.tintColor = UIColor.orangeColor()
    
        //让Item 向上移动一段
        vc.tabBarItem.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -3)
        //内嵌到导航视图控制器中
        let nav = HRMainNavigtionController(rootViewController: vc)
        //添加子视图控制器
        addChildViewController(nav)
    
    }

 

}
